			~~~~~~~~~~~~~~~~~~~~~
			Super Mario 64 Editor
			  created by Doogie
			~~~~~~~~~~~~~~~~~~~~~

------------
Information:
------------

A project of mine that was started a while back, 
it was going to be a simple level copier but then I decided
to incorporate more functionality (without even finishing
the level copier part).

Afterwards I got around to it after much procrastination.

-------------------------
What can this program do:
-------------------------

 -----------
 LEVEL COPY:
 -----------
  This program will allow you to copy an entire level's data
  over another level's allowing you to have two or more
  variations of the same level. (aka Flatworld Battlefield)

  You can also repoint the address of where the level will copy
  to so you can have more room for space.

  There is also a function that will scan through the repointed
  addresses and will tell you if it contains data or not. Useful
  to make sure you don't overwrite anything.
 -----------------------
 COMMAND EDITOR/SCANNER:
 -----------------------
  Scan a level with the flexible command editor/scanner. This
  will allow you to scan a level and it will store the commands
  found and allow you to edit them. You can also add new command
  structures by editing the text files inside the 'command' folder.

  There is also a file 'label.ini' so you can label which addresses
  hold what object/data.
--------------------
Understanding the UI
--------------------

Open Rom - This will copy the rom you want to edit to this programs folder
Save Rom   and write data on-the-fly, when you want to save, it will delete
           the original and copy this 'project' file over the top.

Hex Mode - Show everything in hex, if turned off it will show values in decimal.
 -------------
 Level Copier:
 -------------
  Level Start Address - The address of where the level script begins.
  Level End Address - The address of where the level script ends.
  Level Size - the size of the level in bytes.
  Level Entry-Point Address - Not to sure about this, where the level begins being decoded.

  Copy Level... - Overwrite one level selected with another level that was selected.
  Scan Level... - Check to see if the level has data. (used for finding empty pieces of data)

  Level List (Left) - The data that will be copied to Level List Two (right).
 ---------------
 Command Editor:
 ---------------
  Undefined - The string will change according to the command file
              once a command is loaded.
  Length Skip - Assume that every un-defined command's second byte
                is the length byte.
  Dump Comm. - Dump every unknown command into a text file
               and open that text file after scanning.

  Level List - Select a level and then hit the 'Scan for commands...'
               button.

  Command List - After scanning select a command you wish to edit
                 the all found commands will then appear in the 'empty' box.
  
  Address List - Where to begin reading the command structure.

  Scan for commands... - To be clicked after a level has been
                         selected.
-----------------------
Creating Command Files:
-----------------------

Length Byte <-- Text Displayed on UI
Edits the length byte: <-- Descriptive text displayed when clicked on to edit.
8 <-- byte type (refer to list below)
1 <-- bytes (e.g an address is 4 bytes long, length byte is 1 byte long, X position is 2 bytes long)
--- <-- seperation, anything can be written here, its ignored.
 <-- empty line must be placed at the end of the file.
 -----------
 Byte Types: (only these as no others have been necessary yet)
 -----------
  2 = Unsigned Short (will convert value to unsigned short)
  2.5 = Signed Short (will convert value to signed short)

---------------------------------
Adding more levels to levels.txt:
---------------------------------

Mario 64 Rom hacking hasn't come that far yet and you can only load those levels
or replace them with another copy of the same level (with this very program) the addresses
listed aren't the starting addresses but rather the address that contains the
start address, end address and entry point.

----------------------------
What is Mario 64 Editor.gmd?
----------------------------

This program was made with Game Maker 5.3a, even though my code is probably difficult
to understand I feel that I should release a source-code along with it, so users can
tweak the program to their liking.

Please remember to credit me if you release the program, it is mandatory to also
release your source-code with the EXE.

--------------------
I came across a bug!
--------------------

Report it to me on : jake_1012@hotmail.com

-----------------------
I want _______ feature:
-----------------------

Email me, jake_1012@hotmail.com, and I'll see what I can do.
Don't ask for me to add a 3D level editor.

-----------------------
Credits/Special Thanks:
-----------------------

messiaen - for his inspiring work in hacking SM64 and asm hacking.
VL-Tone - for his documents and amazing motivation for creating TT64.
